///////////////////////////////////////////////////////////////////////////////
//
//    Copyright 2010-2012 Geoffrey TOURON (geoffrey.touron@gmail.com)
//
//    This file is part of Chasis.
//
//    Chasis is free software: you can redistribute it and/or modify
//    it under the terms of the GNU General Public License as published by
//    the Free Software Foundation, either version 3 of the License, or
//    (at your option) any later version.
//
//    Chasis is distributed in the hope that it will be useful,
//    but WITHOUT ANY WARRANTY; without even the implied warranty of
//    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//    GNU General Public License for more details.
//
//    You should have received a copy of the GNU General Public License
//    along with Chasis.  If not, see <http://www.gnu.org/licenses/>.
//
///////////////////////////////////////////////////////////////////////////////

#ifndef PHYSICENGINE_H_
#define PHYSICENGINE_H_

class	Body;

class	Physicengine
{
	public:

		Body			*_bodylist;
		unsigned int	faxis;
		unsigned int	saxis;
		unsigned int	taxis;


		Physicengine();
		~Physicengine();

		void	add(Body *);
		void	remove(Body *);

		void	tick(float);

		void	_insertion_sort();
		void	_check_collision(float);
		void	_collide(float, Body *, Body *);
		bool	_reaction(Body *, Body *, float, unsigned int);
};

#endif
